package com.example.mallgateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;

/**
 * @author guanglin.ma
 * @date 2023-11-29 19:47
 */
@Configuration
public class MallCorsConfiguration {

    @Bean
    public CorsWebFilter corsWebFilter() {
        UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        CorsConfiguration corsConfiguration = new CorsConfiguration();
//        允许所有的请求头
        corsConfiguration.addAllowedHeader("*");
//        允许所有的请求方法，如GET、POST、PUT等
        corsConfiguration.addAllowedMethod("*");
//        允许所有的来源。这通常是一个风险较高的设置，因为它允许来自任何域的请求。
        corsConfiguration.addAllowedOrigin("*");
//        允许凭证，如cookies，在跨源请求中传递。
        corsConfiguration.setAllowCredentials(true);
//        注册一个全局的CORS配置。这里的"/**"是一个匹配模式，表示这个配置适用于所有的URL路径。
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**",corsConfiguration);
        return new CorsWebFilter(urlBasedCorsConfigurationSource);
    }
}
